/**
 * 教师类
 * 继承自Person类，增加授课功能
 */
import java.util.ArrayList;
import java.util.List;

public class Teacher extends Person {
    private List<Course> taughtCourses;  // 教师所授课程
    
    // 构造方法
    public Teacher(String id, String name, String gender) {
        super(id, name, gender);
        taughtCourses = new ArrayList<>();
    }
    
    // 授课方法
    public void teachCourse(Course course) {
        if (!taughtCourses.contains(course)) {
            taughtCourses.add(course);
            course.setTeacher(this);
            // 按顺序显示教师信息和课程信息
            System.out.printf("教师信息：编号=%s，姓名=%s，性别=%s，成功添加所授课程：%s（编号：%s，地点：%s）%n",
                    getId(), getName(), getGender(), 
                    course.getName(), course.getId(), course.getLocation());
        } else {
            System.out.printf("教师信息：编号=%s，姓名=%s，性别=%s，已经教授课程：%s（编号：%s，地点：%s）%n",
                    getId(), getName(), getGender(),
                    course.getName(), course.getId(), course.getLocation());
        }
    }
    
    // 打印教师信息及所授课程
    public void printTaughtCourses() {
        System.out.printf("\n教师信息：编号=%s，姓名=%s，性别=%s%n",
                getId(), getName(), getGender());
        
        if (taughtCourses.isEmpty()) {
            System.out.println("该教师目前未教授任何课程");
        } else {
            System.out.println("所授课程列表（编号、课程名称、上课地点）：");
            for (Course course : taughtCourses) {
                System.out.printf("  课程编号：%s，课程名称：%s，上课地点：%s，上课时间：%s，学分：%d%n",
                        course.getId(), course.getName(), course.getLocation(),
                        course.getTime(), course.getCredit());
            }
        }
    }
    
    // 获取所授课程列表
    public List<Course> getTaughtCourses() {
        return taughtCourses;
    }
}
